#include <iostream>
#include <cstring>
#define int long long
using namespace std;
const int mod = 1e9 + 7;
int sum, len1, len2, dp[5005][5005];
string a, b;
signed main()
{
while(cin >> a >> b)
{
sum = 0, memset(dp, 0, sizeof dp), len1 = a.size(), len2 = b.size();
for(int i = 0; i <= len1 - 1; i++)
for(int j = 0; j <= len2 - 1; j++)
dp[i + 1][j + 1] = (dp[i + 1][j] + (a[i] == b[j]) * (dp[i][j] + 1)) % mod;
for(int i = 1; i <= len1; i++)
sum = (sum + dp[i][len2]) % mod;
cout << sum << endl;
}
return 0;
}
1678. Goal Parser Interpretation | 1389. Create Target Array in the Given Order |
1313. Decompress Run-Length Encoded List | 1281. Subtract the Product and Sum of Digits of an Integer |
1342. Number of Steps to Reduce a Number to Zero | 1528. Shuffle String |
1365. How Many Numbers Are Smaller Than the Current Number | 771. Jewels and Stones |
1512. Number of Good Pairs | 672. Richest Customer Wealth |
1470. Shuffle the Array | 1431. Kids With the Greatest Number of Candies |
1480. Running Sum of 1d Array | 682. Baseball Game |
496. Next Greater Element I | 232. Implement Queue using Stacks |
844. Backspace String Compare | 20. Valid Parentheses |
746. Min Cost Climbing Stairs | 392. Is Subsequence |
70. Climbing Stairs | 53. Maximum Subarray |
1527A. And Then There Were K | 1689. Partitioning Into Minimum Number Of Deci-Binary Numbers |
318. Maximum Product of Word Lengths | 448. Find All Numbers Disappeared in an Array |
1155. Number of Dice Rolls With Target Sum | 415. Add Strings |
22. Generate Parentheses | 13. Roman to Integer |